//
//  ClassTest.h
//  MacTestProject
//
//  Created by LiuLichen on 2022/4/11.
//

#ifndef ClassTest_h
#define ClassTest_h

#import <Foundation/Foundation.h>

/**
 Here need to use import because ClassTest need to know the details of ClassTestSuper so that it
 can override methods or get it's member variables.
 */
#import "ClassTestSuper.h"


extern NSString* const EOCStringConstant;

/**
 Here we should use @class instead of import, because ClassTest do not need to know the details
 of the ClassTestMember, thus only forward decalring it is enough.
 */
@class ClassTestMember;


@interface ClassTest : ClassTestSuper

/**
 @public
 @protected     default behavior, itself and its children can have the access.
 @package
 @private
 */

/**
 property attributes:
    atomic/nonatomic
    readwrite/readonly
    assign/strong/weak/unsafe_unretained/copy
 */

@property (nonatomic, copy, readwrite) NSString* firstName;
@property (nonatomic, copy, readwrite) NSString* lastName;
@property (nonatomic, assign, readonly) NSUInteger age;
@property (nonatomic, assign, readonly) float height;
@property (nonatomic, strong) ClassTestMember* member;
@property (nonatomic, getter=isForTest) BOOL forTest;

- (NSString*) fullName;
- (void) setFullName: (NSString*)fullName;

@end


#endif /* ClassTest_h */
